In general, microcomputers include a microprocessor or central processing unit (CPU) and a plurality of modules, which may be on a single chip or on a plurality of chips, connected together by means of a main bus, which includes address and data lines. The main bus is time shared by all of the modules. Whenever a module requires a fast response, it sends a signal known as an interrupt to the CPU. An interrupt causes the CPU to stop execution of its main program or operation and jump to a special program that responds to the needs of the interrupting module. Essentially, control of the main bus is said to be shifted to the interrupting module. Interrupts have a variety of priorities, depending upon their importance to the system and the urgency of the requested action.
Typically, an interrupt is initiated by a module applying an interrupt request signal to an interrupt request line, which is connected to the CPU. Once an interrupt request is sensed, the CPU starts an interrupt acknowledge sequence utilizing the main bus. The acknowledge sequence includes polling the modules to determine which module or modules requested the interrupt and what priority the requesting module or modules have. If the priority of at least one of the interrupting modules is higher than the priority of the operation currently being performed by the CPU, the CPU sends an interrupt acknowledge signal to the interrupting module and stacks, or stores, the operating information from the current operation. The major problem is that the CPU and the main bus are tied up during the interrupt acknowledge sequence and valuable operating time is used.